

/** 常用web工具 */
export class WebUtils {
    /**
     * 获取url的search参数
     * @returns { [key: string]: string }
     */
    public static urlSearchQuery = (): { [key: string]: string } => {
        let search = window.location.search;
        search = search.replace(/\?/, '');
        const arr1 = search.split('&');
        const query: { [key: string]: string } = {};
        arr1.forEach((v) => {
            const arr2 = v.split('=');
            const key = arr2[0];
            const value = arr2[1];
            query[key] = value;
        });
        return query;
    }
    /**
     * 获取url的search参数
     * @param key 
     * @returns 
     * https://www.abc.com/index.html?a=1&b=2&c=3
     * urlQuery('a') => 1
     */
    public static urlQuery = (key: string): string => {
        const query = WebUtils.urlSearchQuery();
        const value = query[key] || '';
        return value;
    }

    /** 打印 */
    public static print = (msg: string, colorString: string = '#111111', fontSize: number = 12): void => {
        let color: string = '#111111';
        switch (colorString) {
            case 'r':
                color = '#ff0000';
                fontSize = 14;
                break;
            case 'g':
                color = '#009900';
                break;
            case 'b':
                color = '#0000ff';
                break;
            case '0':
                color = '#ff6600';
                break;
            default:
                break;
        }
        console.log(`%c${msg}`, `color:${color}; font-size:${fontSize}px;`);
    }

    /**  判定容器中文字内容的长度是否超出容器宽度 */
    public static checkTextOverflow = (container: HTMLElement, fontSize = '14px'): boolean => {
        const containerWidth = container.offsetWidth; // 获取容器的宽度
        const text = container.innerText; // 获取容器中的文本
        const span = document.createElement('span'); // 创建一个临时的span元素

        span.style.visibility = 'hidden'; // 设置临时span元素的可见性为隐藏
        span.style.position = 'absolute'; // 设置位置为绝对，避免影响布局
        span.style.whiteSpace = 'nowrap'; // 设置不换行
        span.style.width = 'auto'; // 设置宽度自动
        span.style.fontSize = fontSize;
        document.body.appendChild(span); // 将临时span元素添加到文档中

        span.textContent = text; // 设置临时span元素的文本内容

        const textWidth = span.offsetWidth; // 获取文本内容的宽度

        document.body.removeChild(span); // 从文档中移除临时span元素
        // console.log(`textWidth:${textWidth}, containerWidth:${containerWidth}, text:${text}`);
        if (textWidth > containerWidth) {
            // 如果文本宽度大于容器宽度，则超出
            return true;
        } else {
            // 如果文本宽度小于或等于容器宽度，则没有超出
            return false;
        }
    }

    /** 复制文本，到剪切板 */
    public static copyText = async (text: string) => {
        let result = false;
        if ('clipboard' in navigator) {
            try {
                await navigator.clipboard.writeText(text);
                result = true;
            } catch (err) {
                result = false;
            }
        } else {
            result = false;
        }
        return Promise.resolve(result);
    }
}